---
title: 在 Astro 中使用 Bun
description: 了解如何在 Astro 站点中使用 Bun。
type: recipe
i18nReady: true
---

[Bun](https://bun.sh/) 是一个 all-in-one 的 JavaScript 运行时和工具套件。可请参阅 [Bun 的文档](https://bun.sh/docs) 获取更多信息。

:::caution
在 Astro 中使用 Bun 可能会存在一些问题，例如某些集成可能无法正常工作。有关详细信息，请参阅 [Bun 的官方文档中与 Astro 一同使用的内容](https://bun.sh/guides/ecosystem/astro)。

如果你在使用 Bun 时遇到任何问题，请直接在 [Bun 的 GitHub 仓库提交一个 Issue](https://github.com/oven-sh/bun/issues/new/choose)。
:::

## 前期准备

- 在你的机器上安装了 Bun。请参阅 Bun 官方文档的 [安装说明](https://bun.sh/docs/installation)。

## 使用 Bun 创建一个新的 Astro 项目

使用以下 `create-astro` 命令并通过 Bun 创建一个新的 Astro 项目：

```bash
bunx create-astro@latest my-astro-project-using-bun
```

:::tip
你也可以使用 `--template` 标志[从任意现有的 Astro GitHub 仓库中创建了一个新的 Astro 项目](/zh-cn/install-and-setup/#通过-cli-向导安装)：

```bash
bunx create-astro@latest my-astro-project-using-bun --template eliancodes/brutal
```
:::

## 安装依赖

如果你正使用 `bunx create-astro` 创建一个新的项目，CLI 将会自动使用 Bun 安装依赖，所以你可以跳过这一步。

否则，你需要使用 Bun 安装依赖：

```bash
bun install
```

## 添加类型

Bun 发布了含有 Bun 的运行时类型的 [`@types/bun`](https://www.npmjs.com/package/@types/bun) 包。

使用以下命令安装 `@types/bun`：

```sh
bun add -d @types/bun
```

## 使用 Astro 集成

你也可以通过 `astro add` 命令来使用任意 Astro 官方集成：

```bash
bunx astro add react
```

## 通过 Bun 运行 Astro

:::note
在 `astro` 命令之前使用 [`--bun` CLI 标志](https://bun.sh/docs/cli/bunx#shebangs) 来使用 Bun 的运行时替代 Node。
:::

### 运行开发服务器

为了运行开发服务器并使用 Bun 作为运行时，请使用以下命令：

```bash
bunx --bun astro dev
```

### 通过 Bun 构建你的站点

为了使用 Bun 作为运行时构建你的站点，请使用以下命令：

```bash
bunx --bun astro build
```

Astro 会将你的站点输出到 `dist/` 目录。然后，你可以使用 `preview` 命令来运行你的站点：

```bash
bunx --bun astro preview
```

## 使用 Bun 添加 SSR

由于 Bun 提供了 [Node.js API 兼容性](https://bun.sh/docs/runtime/nodejs-apis)的功能，因此你可以使用任何 Astro 适配器进行 [按需渲染](/zh-cn/guides/on-demand-rendering/) 到你的 Astro 项目：

运行如下命令来为你的 Astro 项目添加 Node.js 适配器：

```bash
bunx astro add vercel
```

## 在 Bun 中测试

Bun 通过 `bun test` 命令提供了一个快速的、内置的、兼容 Jest 的测试运行器。如果你想使用它，请阅读 [`bun test` 文档](https://bun.sh/docs/cli/test)。

当然，你也可以使用 Cypress 或 Playwright 来测试你的网页应用。

### Cypress

Cypress 是一个前端测试工具，其使命是“让测试体验变得愉快并带来开发者的快乐”。这使你可以为你的 Astro 站点编写端到端测试。

用以下命令安装 Cypress：

```bash
bun add cypress --dev
```

对于其余的配置和开始你的第一个测试，请参阅 [Astro 测试指南](/zh-cn/guides/testing/#配置) 中的 Cypress 测试部分。

### Playwright

Playwright 是一个端到端测试框架，它允许你在所有现代渲染引擎上测试你的 Astro 代码，包括 Chromium、WebKit 和 Firefox。

用以下命令安装 Playwright：

```bash
bun create playwright
```

要创建你的第一个 Playwright 测试，请按照 [Astro 测试指南](/zh-cn/guides/testing/#创建你的第一个-playwright-测试) 中的其余 Playwright 测试流程。

## 官方资源

- [使用 Astro 和 Bun 构建一个应用](https://bun.sh/guides/ecosystem/astro)

## 社区资源

已经在 Astro 项目中使用 Bun？请在此页面添加你的博客文章或视频！

- [通过 Bun 构建一个 Cloudflare Pages 站点](https://blog.otterlord.dev/posts/hello-from-bun/) - 博客文章
- [将 Bun 与 Astro 和 Cloudflare Pages 结合使用](https://handerson.hashnode.dev/using-bun-with-astro-and-cloudflare-pages) - 博客文章
